package Negocio;

import DTO.DTO_Barra;
import DTO.DTO_Cafeteria;
import DTO.DTO_Cocina;
import DTO.DTO_PedidoInsumo;
import Entities.Entity_Barra;
import Entities.Entity_Cafeteria;
import Entities.Entity_Cocina;
import Entities.Entity_PedidoInsumo;

public class PedidoInsumo {

	private int diasOperativos;
	private Area area;
	private Insumo insumo;
	private int idPedidoInsumo;
	private float cantExistente;
	private float cantSolicitada;
	
	public PedidoInsumo(int dO, Area a, Insumo i, int iPI, float cE,float cS)
	{
		this.setDiasOperativos(dO);
		this.setArea(a);
		this.setInsumo(i);
		this.setIdPedidoInsumo(iPI);
		this.setCantExistente(cE);
		this.setCantSolicitada(cS);
	}
	
	public PedidoInsumo (DTO_PedidoInsumo pedidoInsumo){

		this.diasOperativos = pedidoInsumo.getDiasOperativos();
		if(pedidoInsumo.getArea() instanceof DTO_Cocina)
			this.area = new Cocina((DTO_Cocina) pedidoInsumo.getArea());
		else if(pedidoInsumo.getArea() instanceof DTO_Cafeteria)
			this.area = new Cafeteria((DTO_Cafeteria) pedidoInsumo.getArea());
		else if(pedidoInsumo.getArea() instanceof DTO_Barra)
			this.area= new Barra((DTO_Barra) pedidoInsumo.getArea());
		this.insumo = new Insumo (pedidoInsumo.getInsumo());
		this.idPedidoInsumo = pedidoInsumo.getIdPedidoInsumo();
		this.cantExistente = pedidoInsumo.getCantExistente();
		this.cantSolicitada = pedidoInsumo.getCantSolicitada();
	}
		
	public PedidoInsumo(Entity_PedidoInsumo pedidoInsumo) {
		this.diasOperativos = pedidoInsumo.getDiasOperativos();
		if(pedidoInsumo.getArea() instanceof Entity_Cocina)
			this.area = new Cocina((Entity_Cocina) pedidoInsumo.getArea());
		else if(pedidoInsumo.getArea() instanceof Entity_Cafeteria)
			this.area = new Cafeteria((Entity_Cafeteria) pedidoInsumo.getArea());
		else if(pedidoInsumo.getArea() instanceof Entity_Barra)
			this.area= new Barra((Entity_Barra) pedidoInsumo.getArea());
		this.insumo = new Insumo (pedidoInsumo.getInsumo());
		this.idPedidoInsumo = pedidoInsumo.getIdPedidoInsumo();
		this.cantExistente = pedidoInsumo.getCantExistente();
		this.cantSolicitada = pedidoInsumo.getCantSolicitada();
	}

	public int getDiasOperativos() {
		return diasOperativos;
	}
	public void setDiasOperativos(int diasOperativos) {
		this.diasOperativos = diasOperativos;
	}
	public Area getArea() {
		return area;
	}
	public void setArea(Area area) {
		this.area = area;
	}
	public Insumo getInsumo() {
		return insumo;
	}
	public void setInsumo(Insumo insumo) {
		this.insumo = insumo;
	}
	public int getIdPedidoInsumo() {
		return idPedidoInsumo;
	}
	public void setIdPedidoInsumo(int idPedidoInsumo) {
		this.idPedidoInsumo = idPedidoInsumo;
	}
	public float getCantExistente() {
		return cantExistente;
	}
	public void setCantExistente(float cantExistente) {
		this.cantExistente = cantExistente;
	}
	public float getCantSolicitada() {
		return cantSolicitada;
	}
	public void setCantSolicitada(float cantSolicitada) {
		this.cantSolicitada = cantSolicitada;
	}
	
	//METODOS DE NEGOCIO

	public DTO_PedidoInsumo toDTO(){
		DTO_PedidoInsumo pi = new DTO_PedidoInsumo();
		pi.setArea(area.toDTO());
		pi.setCantExistente(cantExistente);
		pi.setCantSolicitada(cantSolicitada);
		pi.setDiasOperativos(diasOperativos);
		pi.setIdPedidoInsumo(idPedidoInsumo);
		pi.setInsumo(insumo.toDTO());
		return pi;
	}
	
	public Entity_PedidoInsumo toEntity(){
		Entity_PedidoInsumo pi = new Entity_PedidoInsumo();
		pi.setArea(area.toEntity());
		pi.setCantExistente(cantExistente);
		pi.setCantSolicitada(cantSolicitada);
		pi.setDiasOperativos(diasOperativos);
		pi.setIdPedidoInsumo(idPedidoInsumo);
		pi.setInsumo(insumo.toEntity());
		return pi;
	}


}
